#ifndef DYN_MULTIFUNCTOR_H
#define DYN_MULTIFUNCTOR_H

#include <armadillo>

using namespace arma;

/*! \brief Vector-valued functions.
 *
 * This abstract class defines a type
 * that takes a vector input and returns a
 * vector output. We can use this to define
 * multi-variable functions (a size X input vector
 * with a size 1 output vector) or multi-dimensinal
 * dynamical maps.
 */

class MultiFunctor
{
public:
    MultiFunctor(){}

    /*! Pure virtual function that defines the basic
     * operation of all MultiFunctors.
     */
    virtual colvec operator() (const colvec X) = 0;
};

#endif // DYN_MULTIFUNCTOR_H
